package com.mxw.算法之美.a3栈;

/**
 * @author Administrator
 * @create 2024/7/15 15:21
 */
public class S01Stack {

    /**
     * 后进先出
     * 出栈入栈：0(1)
     *
     * 数组实现的：顺序栈
     * 链表实现的：链式栈
     */

    public class ArrayStack {
        private String[] items;
        /**
         * 栈中的元素个数
         */
        private int count;
        /**
         * 栈的大小
         */
        private int n;

        /**
         * 初始化栈
         * @param n
         */
        public ArrayStack(int n){
            this.items = new String[n];
            this.n = n;
            this.count = 0;
        }

        public boolean push(String item){
            // 先判断栈是否满了
            if (count == n){
                System.out.println("栈满了");
                return false;
            }
            // 将item放到下标为count的位置，并且count+1
            items[count] = item;
            ++count;
            return true;
        }
        public String pop(){
            if (count == 0){
                System.out.println("栈为空");
                return null;
            }
            // 返回下标为count-1的数组袁旭，并且栈中元素个数减一
            String tmp = items[count-1];
            --count;
            return tmp;
        }
    }
}
